package ophiux.wechatpay.sdk.request;

import java.util.HashMap;
import java.util.Map;

import ophiux.wechatpay.sdk.response.MicropayResponse;

/**
 * 提交刷卡支付   	请求参数
 * <br/>请求地址:https://api.mch.weixin.qq.com/pay/micropay   服务商独属
 * <br/><h1>创建人: hehailong</h1><br/>
 * 创建时间：2017-7-11 下午2:50:48<br/>
 * 修改记录1：
 */
public class MicropayRequest extends OphiuxBaseRequest<MicropayResponse>{
	//字段名	变量名	必填	类型	示例值	描述
	
	/** 设备号 device_info 否 String(32) 013467007045764 终端设备号(商户自定义，如门店编号)*/
	private String device_info; 
	/** 随机字符串 nonce_str 是 String(32) 5K8264ILTKCH16CQ2502SI8ZNMTM67VS 随机字符串，不长于32位。推荐随机数生成算法 */
	private String nonce_str; 
	/** 签名 sign 是 String(32) C380BEC2BFD727A4B6845133519F3AD6 签名，详见签名生成算法 */
	private String sign; 
	/** 商品描述 body 是 String(128) image形象店-深圳腾大- QQ公仔   商品或支付单简要描述，格式要求：门店品牌名-城市分店名-实际商品名称 */
	private String body;
	/** 商品详情 detail 否 String(6000)  单品优惠功能字段，需要接入请见详细说明 */
	private String detail;
	/** 附加数据 attach 否 String(127) 说明 附加数据，在查询API和支付通知中原样返回，该字段主要用于商户携带订单的自定义数据 */
	private String attach; 
	/** 商户订单号 out_trade_no 是 String(32) 1217752501201407033233368018 商户系统内部订单号，要求32个字符内，只能是数字、大小写字母_-|*@ ，且在同一个商户号下唯一。详见商户订单号 */
	private String out_trade_no; 
	/** 总金额 total_fee 是 Int 888 订单总金额，单位为分，只能为整数，详见支付金额  */
	private int total_fee;
	/** 货币类型 fee_type 否 String(16) CNY 符合ISO 4217标准的三位字母代码，默认人民币：CNY，其他值列表详见货币类型  */
	private String fee_type;
	/** 终端IP spbill_create_ip 是 String(16) 8.8.8.8 调用微信支付API的机器IP   */
	private String spbill_create_ip;
	/** 订单优惠标记 goods_tag 否 String(32)   订单优惠标记，代金券或立减优惠功能的参数，说明详见代金券或立减优惠  */
	private String goods_tag;
	/** 指定支付方式 limit_pay 否 String(32) no_credit no_credit--指定不能使用信用卡支付  */
	private String limit_pay;
	/** 授权码 auth_code 是 String(128) 120061098828009406 扫码支付授权码，设备读取用户微信中的条码或者二维码信息
	 * （注：用户刷卡条形码规则：18位纯数字，以10、11、12、13、14、15开头） 
	 */
	private String auth_code;
	/**
	 * 场景信息 scene_info 否 String(256) 
	{"store_id": "SZT10000","store_name":"腾讯大厦腾大餐厅"}
	该字段用于统一下单时上报场景信息，目前支持上报实际门店信息。 
	{"store_id": "SZT10000","store_name":"腾讯大厦腾大餐厅"}
	 */
	private String scene_info;

	
	
	@Override
	public String getApiMethod() {
		return "POST";
	}

	@Override
	public String getApiVersion() {
		return null;
	}

	@Override
	public Map getTextParam() {
		Map<String, String>  map = new HashMap<String, String>();
		map.put("device_info", device_info);
		map.put("nonce_str", nonce_str);
		map.put("sign", sign);
		map.put("body", body);
		map.put("detail", detail);
		map.put("attach", attach);
		map.put("out_trade_no", out_trade_no);
		map.put("total_fee", total_fee+"");
		map.put("fee_type", fee_type);
		map.put("spbill_create_ip", spbill_create_ip);
		map.put("goods_tag", goods_tag);
		map.put("limit_pay", limit_pay);
		map.put("auth_code", auth_code);
		map.put("scene_info", scene_info);
		MicropayRequest dd=new MicropayRequest();
		return map;
	}

	@Override
	public Class<MicropayResponse> getResponseClass() {
		return MicropayResponse.class;
	}

	public String getDevice_info() {
		return device_info;
	}

	public void setDevice_info(String device_info) {
		this.device_info = device_info;
	}

	public String getNonce_str() {
		return nonce_str;
	}

	public void setNonce_str(String nonce_str) {
		this.nonce_str = nonce_str;
	}

	public String getSign() {
		return sign;
	}

	public void setSign(String sign) {
		this.sign = sign;
	}

	public String getBody() {
		return body;
	}

	public void setBody(String body) {
		this.body = body;
	}

	public String getDetail() {
		return detail;
	}

	public void setDetail(String detail) {
		this.detail = detail;
	}

	public String getAttach() {
		return attach;
	}

	public void setAttach(String attach) {
		this.attach = attach;
	}

	public String getOut_trade_no() {
		return out_trade_no;
	}

	public void setOut_trade_no(String out_trade_no) {
		this.out_trade_no = out_trade_no;
	}

	public int getTotal_fee() {
		return total_fee;
	}

	public void setTotal_fee(int total_fee) {
		this.total_fee = total_fee;
	}

	public String getFee_type() {
		return fee_type;
	}

	public void setFee_type(String fee_type) {
		this.fee_type = fee_type;
	}

	public String getSpbill_create_ip() {
		return spbill_create_ip;
	}

	public void setSpbill_create_ip(String spbill_create_ip) {
		this.spbill_create_ip = spbill_create_ip;
	}

	public String getGoods_tag() {
		return goods_tag;
	}

	public void setGoods_tag(String goods_tag) {
		this.goods_tag = goods_tag;
	}

	public String getLimit_pay() {
		return limit_pay;
	}

	public void setLimit_pay(String limit_pay) {
		this.limit_pay = limit_pay;
	}

	public String getAuth_code() {
		return auth_code;
	}

	public void setAuth_code(String auth_code) {
		this.auth_code = auth_code;
	}

	public String getScene_info() {
		return scene_info;
	}

	public void setScene_info(String scene_info) {
		this.scene_info = scene_info;
	}

}
